package enumtext;

import java.sql.SQLOutput;

//枚举优缺点
//优点：
//1. 枚举常量更简单安全 。
//2. 枚举具有内置方法 ，代码更优雅
//缺点：
//1. 不可继承，无法扩展
public enum TextEnum {
    //RED,BLACK,GREEN;
    RED(1,"RED"),
    BLACK(2,"BLACK"),
    GREEN(3,"GREEN");
    public String color;
    public int ordinal;

    //java当中的枚举默认在是private,默认是私有的不给改
    TextEnum(int ordinal, String color) {
        this.color = color;
        this.ordinal = ordinal;
    }

    public static void main(String[] args) {
        //Enum 类的常用方法
        //values() 以数组形式返回枚举类型的所有成员

        TextEnum[] textEnums = TextEnum.values();//变为数组的形式

        for (int i = 0; i < textEnums.length; i++) {
            //ordinal() 获取枚举成员的索引位置
            System.out.println(textEnums[i] + " " + textEnums[i].ordinal());
        }

        System.out.println("==========");

        //valueOf() 将普通字符串转换为枚举实例
        TextEnum textEnum = TextEnum.valueOf("RED");//查看数组里面有没有这个成员
        System.out.println(textEnum);//有可以直接打印，没则会报错

        //compareTo() 比较两个枚举成员在定义时的顺序
        System.out.println(GREEN.compareTo(RED));//表示后一个数需要移动x步才能移到前一个数

    }
    public static void main1(String[] args) {
        TextEnum textEnum = TextEnum.RED;
        switch (textEnum) {
            case RED:
                System.out.println("RED");
                break;
            case BLACK:
                System.out.println("BLACK");
                break;
            case GREEN:
                System.out.println("GREEN");
                break;
            default:
        }
        /*switch (RED) {
            case BLACK -> System.out.println("RED");
            case RED -> System.out.println("RED");
            case GREEN -> System.out.println("GREEN");
        }*/
    }
}


//作业枚举的TextEnum.values()方法是怎么来的